/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * PanelQuerysEnTexto.java
 *
 * Created on 6/01/2012, 12:53:32 AM
 */
package gui;

import java.sql.SQLException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import manejadorConsultas.ConsultasDatamart;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

/**
 *
 * @author jorgeorm
 */
public class PanelQuerysEnTexto extends javax.swing.JPanel {

    private ConsultasDatamart consultador;
    
    /** Creates new form PanelQuerysEnTexto */
    public PanelQuerysEnTexto() {
        consultador= new ConsultasDatamart();
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jb_Limpiar = new javax.swing.JButton();
        jsp_scrollRespuesta = new javax.swing.JScrollPane();
        jt_respuestaQuery = new javax.swing.JTable();
        jsp_scrollTexto = new javax.swing.JScrollPane();
        jta_queryTexto = new javax.swing.JTextArea();

        setMaximumSize(new java.awt.Dimension(762, 271));
        setMinimumSize(new java.awt.Dimension(762, 271));
        setPreferredSize(new java.awt.Dimension(762, 271));

        jb_Limpiar.setText("Limpiar");
        jb_Limpiar.setToolTipText("Limpia el area de texto.");
        jb_Limpiar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jb_LimpiarActionPerformed(evt);
            }
        });

        jt_respuestaQuery.setAutoCreateRowSorter(true);
        jt_respuestaQuery.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jt_respuestaQuery.setName("Resultado"); // NOI18N
        jsp_scrollRespuesta.setViewportView(jt_respuestaQuery);

        jta_queryTexto.setColumns(20);
        jta_queryTexto.setRows(5);
        jsp_scrollTexto.setViewportView(jta_queryTexto);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jb_Limpiar, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jsp_scrollRespuesta, javax.swing.GroupLayout.DEFAULT_SIZE, 629, Short.MAX_VALUE))
            .addComponent(jsp_scrollTexto, javax.swing.GroupLayout.DEFAULT_SIZE, 762, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jsp_scrollTexto, javax.swing.GroupLayout.PREFERRED_SIZE, 141, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jb_Limpiar)
                        .addContainerGap())
                    .addComponent(jsp_scrollRespuesta, javax.swing.GroupLayout.DEFAULT_SIZE, 124, Short.MAX_VALUE)))
        );
    }// </editor-fold>//GEN-END:initComponents

    public void hacerConsulta()
    {
    //Hago consulta
        //
        String sql= jta_queryTexto.getText();
        // La cadena a analizar sql
//        String cadena = "23+12=35";

        // Obtenemos un Pattern con la expresión regular, y de él
        // un Matcher, para extraer los trozos de interés.
        String PruebA="(\\d+)\\+(\\d+)=(\\d+)";
        Pattern patron = Pattern.compile("SELECT(\\s*\\w+\\s*,)*?(\\w+\\s*)FROM(?:\\w++);");
        System.out.println("Cadena: "+sql);
        Matcher matcher = patron.matcher(sql);

        // Hace que Matcher busque los trozos.
        boolean pudo= matcher.find();

        // Va devolviendo los trozos. El primer paréntesis es el 1,
        // el segundo el 2 y el tercero el 3
//        for(int i=1; i<=matcher.groupCount();i++)
        if(pudo)
        System.out.println(matcher.group(1));
        else System.out.println("No pudo");
        // La salida de este programa es
        // 23
        // 12
        // 35
        try{
            consultador.consultaGeneral(sql);
        }
        catch(SQLException excp)
        {
            excp.printStackTrace();
        }
        String [] colnamesPrueba={"Dato","Marca"};
        jt_respuestaQuery.setModel(consultador.getRsAsTableModel(colnamesPrueba));
    }
    
    
    public CategoryDataset getRsAsCategoryDataset()
    {
        final DefaultCategoryDataset datos= (DefaultCategoryDataset) consultador.getRsAsCategoryDataset();
        for(int i=0; i<datos.getRowCount();i++)
        {
            System.out.println(datos.getValue(i, 2)+"");
        }
        return datos;
    }
    public PieDataset getRsAsPieDataset()
    {
        final DefaultPieDataset datos= (DefaultPieDataset) consultador.getRsAsPieDataset();
        
        return datos;
    }
    
    public JTable getJt_respuestaQuery()
    {
        return this.jt_respuestaQuery;
    }
    
    private void jb_LimpiarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jb_LimpiarActionPerformed
        jta_queryTexto.setText("");
        jt_respuestaQuery.setModel(new DefaultTableModel());
    }//GEN-LAST:event_jb_LimpiarActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jb_Limpiar;
    private javax.swing.JScrollPane jsp_scrollRespuesta;
    private javax.swing.JScrollPane jsp_scrollTexto;
    private javax.swing.JTable jt_respuestaQuery;
    private javax.swing.JTextArea jta_queryTexto;
    // End of variables declaration//GEN-END:variables
}
